草庐IT

C++ 11:std::thread池化?

全部标签

c++ - boost::interprocess::basic_string 作为 std::string

我正在尝试用constboost::interprocess::basic_string&替换返回conststd::string&的类方法。我面临的主要挑战是这两个类之间的不兼容性,尽管它们的实现相似。为了更清楚的解释,我将把它放入代码中classA{std::stringm_str;conststd::string&StrVal(){returnm_str;}}现在这个类看起来像这样:typedefboost::interprocess::allocatorShmemAllocatorChar;typedefboost::interprocess::basic_string,Shm

c++ 我可以将 std::unique_ptr 与依赖注入(inject)一起使用吗?

我一直在使用原始指针进行依赖注入(inject),因此我决定将我的代码转换为使用shared_ptr。这行得通,但我想知道我是否可以改用unique_ptr?在我下面的示例中,MyClass将管理信用卡服务的生命周期。classPaymentProcessor{PaymentProcessor(??creditCardService)::creditCardService_(creditCardService){}private:CreditCardService*creditCardService_;}classMyClass{public:voidDoIt(){creditCard

Debain11常用软件安装:jdk、maven、yum,更换软件源(二)

目录一、安装sudo命令二、安装jdk8三、更换软件源四、Debian安装yum五、安装zip、unzip、curl、lrzsz、NUMA六、安装Maven七、问题一、安装sudo命令1)执行sudo命令,提示-bash:sudo:commandnotfound的解决方法apt-getinstallsudo如果提示E:Unabletolocatepackagesudo的错误,先执行下面的命令:apt-getupdate再执行以下命令就可以了 sudoapt-getinstall 2)如果/etc/sudoers.d文件存在则说明系统已经安装了sudo,只不过没有配置环境要想改变PATH在sud

c++ - 未捕获的 std::exception 在核心中不正确的堆栈跟踪

这是我的代码:#include#includeusingnamespacestd;usingnamespacestd::tr1;usingnamespacestd::tr1::placeholders;classEvent{public:typedefstd::tr1::functionHandler;voidset(Handlerh){m_handler=h;}templatevoidset(T*obj,Fmemfn){set(std::tr1::bind(memfn,obj));}voidoperator()(){m_handler();}staticvoidfire(Event*

c++ - std::forward of rvalue ref to lambda?

考虑以下两个片段:附件A:templateintperform_calc(CalcFuncT&&calcfunc){precalc();intconstcalc=calcfunc();postcalc();returncalc;}intmain(){perform_calc([]{return5*foobar_x()+3;});//toFutureperform_calc([]{return5*foobar_y()-9;});//toPast}图表B:templateintperform_calc(CalcFuncT&&calcfunc){precalc();intconstcalc=

c++ - 基于boost::threads的队列算法

假设有一个std::deque指针队列,指向要执行的任务,确保同时运行的线程数限制在CPU内核数内的最佳方法是什么?即,任务完成后,其余任务随后启动。我为之前的帖子制作了以下代码,我现在遇到的问题是我不确定实现我所描述的内容的最佳策略,并且认为这可能值得征求意见。请注意,我上面提到的“std::deque指针队列”并不是指代码中的dequemtasks。我不希望从这个双端队列中弹出任务,因为我正在使用它来存储以前完成的任务。在程序中输入类似taskp1p2p3p4p5的提示,然后输入info来检查每个任务的当前状态。请注意,目前所有5个任务大约同时完成。然而,我真正想要的是完成前2个(

c++ - 我的 SFINAE 检查 std::map/std::vector 有什么问题?

我有一个简单的SFINAE场景来区分标准容器,如std::map:templatestructHasKeyType:sfinae_test{//(C)templatestaticYestest(typenameContainer::key_type*);//(A)templatestaticNotest(...);enum{value=(sizeof(test(null))==sizeof(Yes))};//(B)};与structsfinae_test{typedefcharYes;typedeflongNo;staticvoid*constnull;};当我用HasKeyType>

c++ - std::find 用于继承对象 C++

1.所以我有:ClassA;ClassB:publicA;ClassC:publicB;2.还有一个B类型的指针vector:vectorvec;3.然后:C*ptr=newC();vec.push_back(ptr);那么问题来了,这样用std::find靠谱吗?std::find(vec.begin(),vec.end(),prt);此外,使用this->指针进行搜索可以吗?std::find(vec.begin(),vec.end(),this);//insideofatypeCobject提前致谢。 最佳答案 是的,这是安全

c++ - std::wostream_iterator

为什么C++中没有std::wostream_iterator?这有什么好的理由吗?#include#include#include#includeintmain(){std::vectormyvec={L"first",L"second"};std::wofstreamf("New.txt");//std::copy(myvec.begin(),myvec.end(),std::wostream_iterator(f));//Error//std::copy(myvec.begin(),myvec.end(),std::ostream_iterator(f));//Errorstd:

c++ - C++11 中引用的使用

我承认我的C++技能有点生疏,我正准备投入到C++11中以完成我即将开始的新项目。我刚刚发现这种令人困惑的行为,如果我写voidMyClass::update(){for(SomeClass&i:_list){i.doStuff();}}或voidMyClass::update(){for(SomeClassi:_list){i.doStuff();}}它似乎与_list完全一样作为std::list.所以我想知道这里的ref有什么用,因为我显然遗漏了一些东西。我应该提一下,我使用的是Xcode4.4.1(4F1003)附带的AppleLLVM4.0。请随意mock和取笑我,如果这是一